;******************************************************************************************************
; sortfwri.asm
; 
; Crea un archivo sortfreg y escribe 30 registros y lo cierra.
;******************************************************************************************************
.model small
.stack
.data

fileName	db "sortfreg.dat",0	;el nombre del archivo debe terminar con un 0 binario!!!!
fHandle		dw ?
reg01	 	dw -1000
reg02	  	dw -1
reg03	  	dw 32
reg04	 	dw -13
reg05	  	dw 1
reg06	  	dw 32222
reg07	 	dw -101
reg08	  	dw -122
reg09	  	dw 3244
reg10	 	dw	-1010
reg11	  	dw	-14
reg12	  	dw	3255
reg13	 	dw	-1020
reg14	  	dw	-199
reg15	  	dw	3233
reg16	 	dw	-1030
reg17	  	dw	-15
reg18	  	dw	3266
reg19	 	dw	-1040
reg20	  	dw	-198
reg21	  	dw	3277
reg22	  	dw	3288
reg23	 	dw	-1050
reg24	  	dw	-197
reg25	  	dw	3299
reg26	 	dw	-1060
reg27	  	dw	-16
reg28	  	dw 3266
reg29	 	dw -1070
reg30	  	dw -196
reg31	  	dw 3200

msjOk       db  "Carga de Archivo OK$"
msjErrOpen	db	"Error en apertura$"
msjErrClose	db	"Error en cierre$"
msjErrWrite	db	"Error en escritura$"

.code
start:
		mov  ax,@data  ;ds <-- dir del segmento de datos
		mov  ds,ax
         
	;CREAR ABRE EL ARCHIVO PARA ESCRITURA
;		mov	al,1		  ;al = tipo de acceso (0=lectura; 1=escritura; 2=lectura y escritura)
		mov	dx,offset fileName	;dx = dir del nombre del archivo
		mov cx,0
		mov	ah,3ch				;ah = servicio para crear archivo 3ch
;		mov	ah,3dh		         ;ah = servicio para abrir archivo 3dh
		int	21h
		jnc	@@reg1
		jmp errOpen
	
@@reg1:	
		mov	fHandle,ax	         ; en ax queda el handle del archivo		
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle	         ;bx = handle del archivo
		mov	cx,2		         ;cx = cantidad de bytes a escribir
		mov	dx,offset reg01	;dx = dir del area de memoria q contiene los bytes a escribir
		mov	ah,40h		         ;ah = servicio para escribir un archivo: 40h
		int	21h
		jnc	@@reg2
		jmp errWrite
	;ESCRIBE EL ARCHIVO
@@reg2:	
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg02
		mov	ah,40h
		int	21h
		jnc	@@reg3
		jmp errWrite		
	;ESCRIBE EL ARCHIVO
@@reg3:		
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg03
		mov	ah,40h
		int	21h
		jnc	@@reg4
		jmp errWrite
@@reg4:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg04
		mov	ah,40h
		int	21h
		jnc	@@reg5
		jmp errWrite
@@reg5:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg05
		mov	ah,40h
		int	21h
		jnc	@@reg6
		jmp errWrite
@@reg6:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg06
		mov	ah,40h
		int	21h
		jnc	@@reg7
		jmp errWrite
@@reg7:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg07
		mov	ah,40h
		int	21h
		jnc	@@reg8
		jmp errWrite
@@reg8:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg08
		mov	ah,40h
		int	21h
		jmp	@@reg31	
;		jnc	@@reg9
		jmp errWrite
@@reg9:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg09
		mov	ah,40h
		int	21h
		jnc	@@reg10
		jmp errWrite
@@reg10:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg10
		mov	ah,40h
		int	21h
		jnc	@@reg11
		jmp errWrite
@@reg11:					
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg11
		mov	ah,40h
		int	21h
		jnc	@@reg12
		jmp errWrite
@@reg12:		
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg12
		mov	ah,40h
		int	21h
		jnc	@@reg13
		jmp errWrite
@@reg13:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg13
		mov	ah,40h
		int	21h
		jnc	@@reg14
		jmp errWrite
@@reg14:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg14
		mov	ah,40h
		int	21h
		jnc	@@reg15
		jmp errWrite
@@reg15:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg15
		mov	ah,40h
		int	21h
		jnc	@@reg16
		jmp errWrite
@@reg16:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg16
		mov	ah,40h
		int	21h
		jnc	@@reg17
		jmp errWrite
@@reg17:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg17
		mov	ah,40h
		int	21h
		jnc	@@reg18
		jmp errWrite
@@reg18:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg18
		mov	ah,40h
		int	21h
		jnc	@@reg19
		jmp errWrite
@@reg19:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg19
		mov	ah,40h
		int	21h
		jnc	@@reg20
		jmp errWrite
@@reg20:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg20
		mov	ah,40h
		int	21h
		jnc	@@reg21
		jmp errWrite
@@reg21:
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg21
		mov	ah,40h
		int	21h
		jnc	@@reg22

		jmp errWrite
@@reg22:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg22
		mov	ah,40h
		int	21h
		jnc	@@reg23
		jmp errWrite	
@@reg23:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg23
		mov	ah,40h
		int	21h
		jnc	@@reg24
		jmp errWrite		
@@reg24:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg24
		mov	ah,40h
		int	21h
		jnc	@@reg25
		jmp errWrite
@@reg25:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg25
		mov	ah,40h
		int	21h
		jnc	@@reg26
		jmp errWrite
@@reg26:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg26
		mov	ah,40h
		int	21h
		jnc	@@reg27
		jmp errWrite
@@reg27:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg27
		mov	ah,40h
		int	21h
		jnc	@@reg28
		jmp errWrite
@@reg28:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg28
		mov	ah,40h
		int	21h
		jnc	@@reg29
		jmp errWrite		
@@reg29:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg29
		mov	ah,40h
		int	21h
		jnc	@@reg30
		jmp errWrite			
@@reg30:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg30
		mov	ah,40h
		int	21h
		jnc	@@reg31
		jmp errWrite	
@@reg31:	
	;ESCRIBE EL ARCHIVO
		mov	bx,fHandle
		mov	cx,2
		mov	dx,offset reg31
		mov	ah,40h
		int	21h
		jnc	@@cierrarch
		jmp errWrite
		
@@cierrarch:		
	;CIERRA EL ARCHIVO
		mov	bx,fHandle	;bx = handle del archivo
		mov	ah,3eh		;ah = servicio para cerrar archivo: 3eh
		int	21h
		jc	errClose
	;IMPRIMO MENSAJE DE FIN OK
		mov	dx,offset msjOk
		mov	ah,9
		int	21h
		jmp	fin

errOpen:
	mov	dx,offset msjErrOpen
	mov	ah,9
	int	21h
	jmp	fin
errWrite:
	mov	dx,offset msjErrWrite
	mov	ah,9
	int	21h
	jmp	fin
errClose:
	mov	dx,offset msjErrClose
	mov	ah,9
	int	21h
fin:
	mov  ax,4c00h  ; retornar al DOS
	int  21h
end start